#pragma once

#pragma warning(disable: 4221)
#pragma warning(disable: 4067)
#include <fbxsdk.h>
#pragma warning(default: 4067)


namespace Eifersucht
{
	namespace Fbx // Convenient type definitions for Fbx library
	{
		typedef FbxStatus Status; TinyTypeDecl( Status );
		typedef FbxString String; TinyTypeDecl( String );
		typedef FbxManager Manager; TinyTypeDecl( Manager );
		typedef FbxImporter Importer; TinyTypeDecl( Importer );
		typedef FbxAxisSystem AxisSystem; TinyTypeDecl( AxisSystem );
		typedef FbxIOSettings IOSettings; TinyTypeDecl( IOSettings );

		typedef FbxMesh Mesh; TinyTypeDecl( Mesh );
		typedef FbxNode Node; TinyTypeDecl( Node );
		typedef FbxScene Scene; TinyTypeDecl( Scene );
		typedef FbxNodeAttribute NodeAttribute; TinyTypeDecl( NodeAttribute );
		typedef FbxGeometryConverter GeometryConverter; TinyTypeDecl( GeometryConverter );

		typedef FbxMatrix Matrix; TinyTypeDecl( Matrix );
		typedef FbxAMatrix AffineMatrix; TinyTypeDecl( AffineMatrix );

		typedef FbxSkin Skin; TinyTypeDecl( Skin );
		typedef FbxShape Shape; TinyTypeDecl( Shape );
		typedef FbxCluster Cluster; TinyTypeDecl( Cluster );
		typedef FbxSkeleton Skeleton; TinyTypeDecl( Skeleton );
		typedef FbxDeformer Deformer; TinyTypeDecl( Deformer );
		typedef FbxBlendShape BlendShape; TinyTypeDecl( BlendShape );
		typedef FbxAnimStack AnimStack; TinyTypeDecl( AnimStack );
		typedef FbxAnimLayer AnimLayer; TinyTypeDecl( AnimLayer );
		typedef FbxAnimCurve AnimCurve; TinyTypeDecl( AnimCurve );
	};
};